
import{createStore} from "vuex"
import axios from "axios";

/**
 vuex核心作用就是状态管理（组件之间的数据交互）
 任何组件想要数据就来这里读取即可，
 公共数据池
 */
export default createStore({
    //state存放所有的数据
    state:{
        aCount:0,
        a:'张三',
        b:'李四'
    },
    //做业务逻辑判断
    getters:{
        getCount(state){
            //也可以做业务逻辑
            return state.aCount>0?state.aCount:"数据异常"
        },
        getAa(state){
            return state.a
        },
    },
    mutations:{
        addCount(state,num){
            //数据改变后，所有页面都会改变
            state.aCount++
            state.a='a计算后：'+(state.aCount+num)
            console.log('count=',state.aCount)
        },
        addBB(state,str){
            state.b='b修改后：'+str
        }
    },
    //异步操作，耗时操作，不能同步
    //需要同步用调用mutations里面的方法
    actions:{
        //commit是调用mutations里面方法的
        getHttpData({commit}){
            console.log('actions=',commit)
            axios.get('http://localhost:8080')
                .then(res=>{
                    //调用的是mutations里面的方法
                    //addCount：是mutations里面的方法
                    commit('addCount',res.data)
                })

        }
    }
})
